const axios = require('axios');

const generateAiSuggestions = async (weatherData, forecastData, cityName) => {
  // 构建发送给通义大模型的Prompt
  const prompt = `根据以下${cityName}的实时天气和未来几天的预报信息，生成一个详细的出行计划和生活建议。

实时天气：
温度: ${weatherData.temperature}°C
描述: ${weatherData.description}
风向: ${weatherData.winddirection}
风力: ${weatherData.windpower}
湿度: ${weatherData.humidity}%
发布时间: ${weatherData.date}

未来天气预报：
${forecastData.map(f => `日期: ${f.date}, 星期: ${f.week}, 白天天气: ${f.day_weather}, 夜晚天气: ${f.night_weather}, 白天温度: ${f.day_temp}°C, 夜晚温度: ${f.night_temp}°C, 白天风向: ${f.day_wind}, 白天风力: ${f.day_power}, 夜晚风向: ${f.night_wind}, 夜晚风力: ${f.night_power}`).join('\n')}

请以 JSON 格式返回，包含 'travel_plan'（出行计划）和 'life_suggestions'（生活建议）两个键。`;

  try {
    // 更强力地清理 API Key，移除所有引号和空格
    const cleanedApiKey = process.env.DASHSCOPE_API_KEY ? 
      process.env.DASHSCOPE_API_KEY.replace(/['"\s]/g, '') : '';

    const authHeader = `Bearer ${cleanedApiKey}`;
    console.log('[aiService] Sending Authorization header:', authHeader); // 打印实际发送的头信息

    const response = await axios.post(
      'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation', // 通义大模型API endpoint
      {
        model: "qwen-plus", // 使用通义千问-Plus模型，也可以选择其他模型如"qwen-turbo"
        input: {
          messages: [
            {
              role: "user",
              content: prompt
            }
          ]
        },
        parameters: {
          result_format: "message" // 确保返回消息格式
        }
      },
      {
        headers: {
          'Content-Type': 'application/json',
          'Authorization': authHeader // 使用清理后的API Key
        },
      }
    );

    // 通义大模型响应结构: response.data.output.choices[0].message.content
    let rawText = response.data.output.choices[0].message.content;
    console.log('[aiService] Raw AI response text:', rawText);

    // 移除Markdown代码块的围栏
    if (rawText.startsWith('```json') && rawText.endsWith('```')) {
      rawText = rawText.substring(7, rawText.length - 3).trim();
    }

    // 尝试解析JSON
    try {
      return JSON.parse(rawText);
    } catch (jsonParseError) {
      console.error('解析AI响应JSON失败:', jsonParseError);
      return { error: 'AI响应格式错误，无法解析为JSON。', details: rawText };
    }
  } catch (error) {
    console.error('调用AI服务失败:', error.response ? error.response.data : error.message);
    return { error: '调用AI服务失败', details: error.response ? error.response.data : error.message };
  }
};

module.exports = { generateAiSuggestions }; 